package com.test.mchelepesa.util_rice.analytics_rice.util_rice

import android.app.Application
import android.util.Log
import com.test.mchelepesa.bean_rice.config_info_rice.GlobalConfig_rice
import com.test.mchelepesa.util_rice.analytics_rice.bean_rice.ParamHitPoint_rice
import com.test.mchelepesa.util_rice.analytics_rice.event_rice.IAnalyticsEvent_rice
import com.test.mchelepesa.util_rice.analytics_rice.http_rice.HttpHelper_rice
import com.google.gson.Gson
import com.test.mchelepesa.constant_rice.UserInfoData_rice
import com.test.mchelepesa.util_rice.StringUtil_rice
import com.test.mchelepesa.util_rice.helper_rice.UserInfoHelper_rice

object AnalyticsUtil_rice {

    /**
     * 初始化分析模块
     *
     * @param context Application
     */
    fun init(context: Application) {
        /** 初始化google install referrer */
        GoogleInstallUtil_rice.init(context) {
            /** 保存渠道信息*/
            saveGoogleInstallInfo()
        }

        /** 初始化广告id */
        AdvertIdUtil_rice.init(context) { _, _ ->
            /** 保存渠道信息*/
            saveGoogleInstallInfo()
        }

        /** 初始化设备信息 */
        SycDeviceUtil_rice.init(context)

        /** 初始化adjust信息 */
        AdjustUtil_rice.init(context)

        /** 初始化frebase */
        FirebaseUtil_rice.init(context)

    }

    /**
     * 更新设备模块服务器请求地址
     * 1、如果未登录，在登录页登录成功后触发
     * 2、如果已登录，在启动时登录地区的转发路径时初始化成功后触发
     *
     * @param context Application
     */
    fun initDevice(context: Application) {
        /** 初始化设备信息 */
        SycDeviceUtil_rice.init(context)
    }

    /**
     * 打点
     * 主要对注册、申贷这两个结果记录打点
     * 均是接口返回成功后触发打点
     *
     * @param event 事件名
     */
    fun addEvent(event: IAnalyticsEvent_rice) {
        AdjustUtil_rice.addEvent(event)
        FirebaseUtil_rice.addEvent(event)
    }

    /**
     * 保存google s2s信息
     * **通常不用手动触发**
     * 1、启动页，触发保存
     */
    fun saveGoogleInstallInfo() {
        GoogleInstallUtil_rice.saveS2sInfo()
    }

    /**
     * 保存firebase s2s信息
     * 1、启动页，如果是已登录状态，触发保存
     * 2、登录页，登录成功后，触发保存
     */
    fun saveFirebaseS2SInfo(targetUrlList: List<String>) {
        FirebaseUtil_rice.saveS2SInfo(targetUrlList)
    }

    /**
     * 保存Device s2s信息
     * 1、首页，点击申请且所有权限通过后，触发保存
     */
    fun saveDeviceS2SInfo() {
        SycDeviceUtil_rice.saveS2SInfo()
    }

    /**
     * 保存Adjust 安装信息
     * **通常不用手动触发**
     * 1、收到Adjust的转化回调后，触发保存
     */
    fun saveAdjustInstall(targetUrlList: List<String>) {
        AdjustUtil_rice.saveInstallInfo()
    }

    /**
     * 保存事件埋点
     *
     * @param type 事件类型
     * @param remark 备注
     */
    fun saveHitPointInfo(type: String, remark: String) {
        try {
            val params = ParamHitPoint_rice(type = type, remark = remark)
            val body = Gson().toJson(params).trim()
            HttpHelper_rice.postData("", body)
        } catch (e: Exception) {
            StringUtil_rice.printException(e)
        }
    }

    /**
     * 获取谷歌安装渠道信息
     */
    fun getInstallReferrer(): String {
        return GoogleInstallUtil_rice.getInstallReferrer()
    }

    /**
     * 获取adId
     */
    fun getAdId(): String {
        return AdvertIdUtil_rice.getAdId()
    }

    /**
     * 获取adEnabled
     */
    fun getAdEnabled(): Int {
        return AdvertIdUtil_rice.getAdEnabled()
    }

    /**
     * 获取安卓Id
     */
    fun getAndroidId(): String {
        return AdvertIdUtil_rice.getAndroidId()
    }

    /**
     * 获取Firebase app id
     */
    fun getFirebaseAppId(): String {
        return FirebaseUtil_rice.getFirebaseAppId()
    }

    /**
     * 获取Firebase ga4 id
     */
    fun getGa4InstanceId(): String {
        return FirebaseUtil_rice.getGa4InstanceId()
    }
}